﻿using sipfe.model.dataAccess;
using sipfe.service.autoayuda;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace sipfe.Areas.Auto.Controllers
{
    public class AutoAyudaController : Controller
    {
        BDSIPFEEntities db = new BDSIPFEEntities();
        
        public JsonResult ListaMaeCompendioAuto(string wordSearch)
        {
            var resultado = (from r in db.SIPMaeCompendio
                             where r.vNomTabla.Contains(wordSearch) 
                             select new { r.vNomTabla, r.nIdeCompendio });
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }
        public JsonResult ListaDetCompendioAuto(string wordSearch, int n_IdeCompendio)
        {
            var resultado = (from r in db.SIPDetCompendio
                             where (r.vNomDetalle.Contains(wordSearch)) && (r.nIdeCompendio == n_IdeCompendio)
                             select new { r.vNomDetalle, r.nIdeDetalle });
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }
        //Constante.getInstance().N_IDE_TABLA_CIUU

        public JsonResult ListaMaeDependenciaAuto(string wordSearch)
        {
            var resultado = (from r in db.SIPMaeDependencia
                             where r.vDescripcion.ToLower().Contains(wordSearch.ToLower())
                             select new { descripcion = r.vDescripcion, identificador = r.nIdeDep });
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }
        
        public JsonResult ListaMaeOpcionAuto(string wordSearch)
        {
            var resultado = (from r in db.SIPMaeOpcion
                             where r.vDescr.ToLower().Contains(wordSearch.ToLower())
                             select new { descripcion = r.vDescr, identificador = r.nIdeOpcion });
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }
        public JsonResult ListaPersonaAuto(string wordSearch, string sw, int maxRows)
        {
                 

            if(sw.Equals("1")){
                var resultado = (from r in db.SIPMaePersona
                                 where (r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdePersona,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido
                                 }).Take(maxRows);
                 return Json(resultado, JsonRequestBehavior.AllowGet);
            }
            else if (sw.Equals("2"))
            {
               var resultado = (from r in db.SIPMaePersona
                                where (r.vNumDocum).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdePersona,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido
                                 });
                return Json(resultado, JsonRequestBehavior.AllowGet);
            }            
            return null;
        }

        public JsonResult ListaEmpresaAuto(string wordSearch, string sw, int maxRows)
        {


            if (sw.Equals("1"))
            {
                var resultado = (from r in db.SIPMaeEmpresa
                                 where (r.vRazonSocial).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdeEmpresa,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vRazonSocial
                                 }).Take(maxRows);
                return Json(resultado, JsonRequestBehavior.AllowGet);
            }
            else if (sw.Equals("2"))
            {
                var resultado = (from r in db.SIPMaeEmpresa
                                 where (r.vNumDocum).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdeEmpresa,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vRazonSocial
                                 }).Take(maxRows);
                return Json(resultado, JsonRequestBehavior.AllowGet);
            }
            return null;
        }

        public JsonResult ListaAreaMultipleDerivar(string term)
        {
                     
            var resultado = (from r in db.SIPMaeDependencia
                             where (r.vDescripcion).Contains(term)
                             select new
                             {
                                 id = r.nIdeDep,                                 
                                 label = r.vDescripcion,
                                 value = r.vDescripcion
                             });
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }
        //maxRows: 15, wordSearch: request.term, sw: sw, nIdeTipoDocum: nIdeTipoDocum

        public JsonResult ListaInteresadoAuto(string wordSearch, string sw, int maxRows,int nIdeTipoDocum)
        {
            if (sw.Equals("1"))
            {
                if (nIdeTipoDocum == Constante.N_RUC) //ruc
                {
                    var resultado = (from r in db.SIPMaeEmpresa
                                     where (r.vRazonSocial).Contains(wordSearch)
                                     select new
                                     {
                                         nIdePersonaRes = r.nIdeEmpresa,
                                         nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                         nIdeTipoDocumRes = r.nIdeTipoDocum,
                                         vNumDocumRes = r.vNumDocum,
                                         vEmpresa = r.vRazonSocial
                                     }).Take(maxRows);

                    return Json(resultado, JsonRequestBehavior.AllowGet);
                                      
                }
                else 
                {
                    var resultado = (from r in db.SIPMaePersona
                                     where (r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido).Contains(wordSearch)
                                     select new
                                     {
                                         nIdePersonaRes = r.nIdePersona,
                                         nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                         nIdeTipoDocumRes = r.nIdeTipoDocum,
                                         vNumDocumRes = r.vNumDocum,
                                         vEmpresa = r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido
                                     }).Take(maxRows);
                    return Json(resultado, JsonRequestBehavior.AllowGet); 
                }
            }
            else if (sw.Equals("2"))
            {
                if (nIdeTipoDocum == Constante.N_RUC) //ruc
                {
                    var resultado = (from r in db.SIPMaeEmpresa
                                     where (r.vNumDocum).Contains(wordSearch)
                                     select new
                                     {
                                         nIdePersonaRes = r.nIdeEmpresa,
                                         nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                         nIdeTipoDocumRes = r.nIdeTipoDocum,
                                         vNumDocumRes = r.vNumDocum,
                                         vEmpresa = r.vRazonSocial
                                     }).Take(maxRows);
                    return Json(resultado, JsonRequestBehavior.AllowGet);

                }
                else
                {
                    var resultado = (from r in db.SIPMaePersona
                                     where (r.vNumDocum).Contains(wordSearch)
                                     select new
                                     {
                                         nIdePersonaRes = r.nIdePersona,
                                         nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                         nIdeTipoDocumRes = r.nIdeTipoDocum,
                                         vNumDocumRes = r.vNumDocum,
                                         vEmpresa = r.vPriNombre + " " + r.vPriApellido + " " + r.vSegApellido
                                     });
                    return Json(resultado, JsonRequestBehavior.AllowGet);
                }
            }          
            
            
            return null;
        }

        public JsonResult ListaInstitucionAuto(string wordSearch, string sw, int maxRows)
        {


            if (sw.Equals("1"))
            {
                var resultado = (from r in db.SIPMaeEmpresa
                                 where (r.vRazonSocial).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdeEmpresa,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vRazonSocial
                                 }).Take(maxRows);
                return Json(resultado, JsonRequestBehavior.AllowGet);
            }
            else if (sw.Equals("2"))
            {
                var resultado = (from r in db.SIPMaeEmpresa
                                 where (r.vNumDocum).Contains(wordSearch)
                                 select new
                                 {
                                     nIdePersonaRes = r.nIdeEmpresa,
                                     nIdeCodPaisDocRes = r.nIdeCodPaisDoc,
                                     nIdeTipoDocumRes = r.nIdeTipoDocum,
                                     vNumDocumRes = r.vNumDocum,
                                     vEmpresa = r.vRazonSocial
                                 }).Take(maxRows);
                return Json(resultado, JsonRequestBehavior.AllowGet);
            }
            return null;
        }

        public ViewResult ListaIntituciones(string wordSearch)
        {
            AutoAyudaService auto = new AutoAyudaService();
            List<SIPMaeEmpresa> lista = new List<SIPMaeEmpresa>();
            lista = auto.ListaIntitucionesService(wordSearch.ToUpper());
            return View(lista);
        }

        public ViewResult ListaElementosCompendio(string wordSearch, int n_IdeCompendio)
        {
            var listaElemento = (from r in db.SIPDetCompendio
                            where (r.vNomDetalle.Contains(wordSearch)) && (r.nIdeCompendio == n_IdeCompendio)
                            select new { r.vNomDetalle, r.nIdeDetalle }).ToList();
            List<SIPDetCompendio> lista = new List<SIPDetCompendio>();
            SIPDetCompendio sipDetCompendio = null;

            foreach (dynamic item in listaElemento)
            {
                sipDetCompendio = new SIPDetCompendio();
                sipDetCompendio.nIdeDetalle = item.nIdeDetalle;
                sipDetCompendio.vNomDetalle = item.vNomDetalle;
                lista.Add(sipDetCompendio);
            }
            
            //AutoAyudaService auto = new AutoAyudaService();
            //List<SIPDetCompendio> lista = new List<SIPDetCompendio>();
            //lista = auto.ListaElementosCompendioService(wordSearch.ToUpper(), n_IdeCompendio);
            return View(lista);
        }

        //public JsonResult ListaDetCompendioAuto(string wordSearch, int n_IdeCompendio)
        //{
        //    var resultado = (from r in db.SIPDetCompendio
        //                     where (r.vNomDetalle.Contains(wordSearch)) && (r.nIdeCompendio == n_IdeCompendio)
        //                     select new { r.vNomDetalle, r.nIdeDetalle });
        //    return Json(resultado, JsonRequestBehavior.AllowGet);
        //}



    }
}
